snippet header "standard Vim script file header"
	" File: ${1:`expand('%:t')`}
	" Author: ${2:`g:snips_author`}
	" Description: ${3}
	${0:" Last Modified: `strftime("%B %d, %Y")`}
endsnippet

snippet guard "script reload guard"
	if exists('${1:did_`vim_snippets#Filename()`}') || &cp${2: || version < 700}
		finish
	endif
	let $1 = 1${0}
endsnippet

snippet f "function"
	fun! ${1:`expand('%') =~ 'autoload' ? substitute(matchstr(expand('%:p'),'autoload/\zs.*\ze.vim'),'[/\\]','#','g').'#' : ''`}${2:function_name}(${3})
		${0}
	endf
endsnippet

snippet t try ... catch statement
	try
		${1:${VISUAL}}
	catch ${2}
		${0}
	endtry
endsnippet

snippet for "for ... in loop"
	for ${1} in ${2}
		${0:${VISUAL}}
	endfor
snippet forkv for [key, value] in loop
	for [${1},${2}] in items(${3})
		${0}
		unlet $1 $2
	endfor
endsnippet

snippet wh "while loop"
	while ${1}
		${0:${VISUAL}}
	endw
endsnippet

snippet if "if statement"
	if ${1}
		${0:${VISUAL}}
	endif
endsnippet

snippet ife "if ... else statement"
	if ${1}
		${2:${VISUAL}}
	else
		${0}
	endif
endsnippet

snippet au "augroup ... autocmd block"
	augroup ${1:AU_NAME}
		autocmd!
		autocmd ${2:BufRead,BufNewFile} ${3:*.ext,*.ext3|<buffer[=N]>} ${0}
	augroup END
endsnippet

snippet auv "augroupvisual ... autocmd block with visual placeholder"
	augroup ${1:AU_NAME}
		autocmd!
		${0:${VISUAL}}
	augroup END
endsnippet

snippet bun "Vundle.vim Plugin definition"
	Plugin '${0}'
endsnippet

snippet plug "vim-plug Plugin definition"
	Plug '${0}'
endsnippet

snippet plugdo "vim-plug Plugin definition with { 'do': '' }"
	Plug '${1}', { 'do': '${0}' }
endsnippet

snippet plugon "vim-plug Plugin definition with { 'on': '' }"
	Plug '${1}', { 'on': '${0}' }
endsnippet

snippet plugfor "vim-plug Plugin definition with { 'for': '' }"
	Plug '${1}', { 'for': '${0}' }
endsnippet

snippet plugbr "vim-plug Plugin definition with { 'branch': '' }"
	Plug '${1}', { 'branch': '${0}' }
endsnippet

snippet plugtag "vim-plug Plugin definition with { 'tag': '' }"
	Plug '${1}', { 'tag': '${0}' }
endsnippet

snippet let
	let ${1:variable} = ${0: value}
endsnippet

snippet se
	set ${1:setting};
endsnippet

snippet set
	set ${1:setting} = ${0:value}
endsnippet

snippet nn
	nnoremap ${1} ${2}<CR>
endsnippet

snippet no
	noremap ${1} ${2}
endsnippet

snippet vm
	vmap ${1} ${2}
endsnippet

snippet im
	imap ${1} ${2}
endsnippet

snippet exe
	execute ${1}
endsnippet

snippet filename
	`Filename()`
endsnippet
